Skip Headers

Oracle® OLAP Developer's Guide to the OLAP API 10g Release 2 (10.2) Part Number B14347-01 |
Home | Book List | Contents | Index | Master Index | Feedback

Previous | Next
| View PDF

# What's New

This preface describes the features of the Oracle OLAP API that are new in Oracle OLAP 10g Release 2 (10.2) . This preface contains the following topics:

- Introducing Custom Dimension Members

- Introducing the OLAP API Model

- Introducing DataProvider Language Specification and Other Properties

- New OLAP API Classes

- New Methods of Existing Classes

- New and Revised Example Programs

## Introducing Custom Dimension Members

The Oracle OLAP API now supports the creation of custom dimension members, which are calculated virtual members that you can use in specifying a query. When you create a custom dimension member, you provide a `Source` that Oracle OLAP uses to calculate the value for a dimensioned object that is specified by the custom member. When you specify a query that retrieves the value of a dimensioned object that is specified by the custom member, Oracle OLAP calculates the value for the custom member and assigns it as the value of the dimensioned object.

Custom dimension members are instances of the classes that implement the new `MdmMember` interface. You can create a custom member for an `MdmStandardDimension`, an `MdmTimeDimension`, or an `MdmMeasureDimension`. For more information on custom dimension members and for examples of creating them, see Chapter 2, "Understanding OLAP API Metadata".

Oracle OLAP uses an `MdmModel` to hold information for a custom dimension member. An `MdmModel` implements the `Model` interface. When you create a custom dimension member, Oracle OLAP automatically creates an `Assignment` object and adds it to the `MdmModel` associated with the dimension. The `Assignment` object specifies the dimension, the dimension member, and the `Source` that Oracle OLAP uses to calculate the value to assign for the dimension member. For information about the `Model` interface and the `Assignment` class, see "Introducing the OLAP API Model".

## Introducing the OLAP API Model

A `Source` that has inputs is a dimensioned `Source`. With an OLAP API `Model`, you can assign calculated values to a dimensioned `Source`. Using `Model` objects, you can specify elements of the inputs and specify the calculation that produces the value to assign to the dimensioned `Source`.

The `MdmModel` class and its subclasses implement the `Model` interface for `MdmObject` objects. Those classes are in the `oracle.olapi.metadata.mdm` package.

The `CustomModel` class implements the interface for an object that you can explicitly create and that is not necessarily associated with an `MdmObject`. In creating a `CustomModel`, you specify its input `Source` objects.

A `Model` is closely related to a `Source`, so the `Model` interface, the associated `Assignment` and `Qualification` classes, and the `CustomModel` class are in the `oracle.olapi.data.source` package. A `Qualification` identifies an element of a `Source`. For example, a `Qualification` might specify a member of a dimension. An `Assignment` has one or more `Qualification` objects and a `Source` that Oracle OLAP uses to calculate the value to assign. A `Model` can have from zero to many `Assignment` objects.

When Oracle OLAP retrieves the values for a dimensioned `Source`, it evaluates the `Assignment` objects of the `Model` associated with the `Source`. It assigns the results of the calculations specified by the `Assignment` objects to the elements of the dimensioned `Source` that are specified by the `Qualification` objects of the `Assignment` objects.

Because the calculations specified by the `Assignment` objects of a `Model` can apply to any `Source` that has the same inputs as the `Model`, the OLAP API requires a way to represent the `Source` to which Oracle OLAP is currently applying the `Model`. The role of representing the current dimensioned `Source` is taken by a placeholder `Source`, which is a new type of `Source`.

The OLAP API has placeholder `Source` objects for the different data types. You get a placeholder `Source` by first getting a `FundamentalMetadataObject` object for a placeholder of a specific data type from your `FundamentalMetadataProvider`. You then call the `getSource` method of the `FundamentalMetadataObject`.

For examples of using placeholder `Source` objects and a `CustomModel`, see "New and Revised Example Programs". For more information on the `Model` classes, see Chapter 6, "Understanding Source Objects".

## Introducing DataProvider Language Specification and Other Properties

The `ExpressDataProvider` class now has constructors that take a `java.util.Locale` object, a `java.util.Properties` object, or both. By passing a `Locale` object to the constructor, you can create an `ExpressDataProvider` that can provide string values in the language specified for an analytic workspace that supports the language.

An `ExpressDataProvider` has certain default characteristics or properties, which include the following.

- It uses unique dimension hierarchy member values.

- It recognizes both OLAP Catalog metadata and standard form analytic workspace metadata.

- For an analytic workspace, it issues an ALTER SESSION SET NLS_LANGUAGE SQL command that sets the language of the database.

By passing a `Properties` object to the constructor, you can create an `ExpressDataProvider` that has different properties. You can specify that the `ExpressDataProvider` use local dimension member values. For information on local and unique dimension member values, see "Unique and Local Dimension Values" in Chapter 1, "Introduction to the OLAP API".

You can also create an `ExpressDataProvider` that has an associated `MetadataProvider` that recognizes only OLAP Catalog metadata, which is generated by Oracle Enterprise Manager and by PL/SQL CWM2 package APIs, or only standard form analytic workspace metadata, which is generated by Analytic Workspace Manager and by the Oracle OLAP Analytic Workspace Java API, or only the custom metadata objects you create by using classes in the `oracle.olapi.metadata.mdm` and `oracle.olapi.metadata.mtm` packages.

If you want your application to control the language properties, then you can specify that the `ExpressDataProvider` does not use the default language. For more information on setting the properties of an `ExpressDataProvider`, see the description of that class in the Oracle OLAP Java API Reference.

## New OLAP API Classes

This section describes the new classes in the OLAP API.

### New Classes in the oracle.olap.data.source Package

The following table lists the new classes in the `oracle.olapi.data.source` package and provides brief descriptions of them.

Class | Description
--- | ---
`Model` | An interface for an object that contains `Assignment` objects. This interface is implemented by the `MdmModel` and `CustomModel` classes.
`CustomModel` | A `Model` that an application can explicitly create.
`Assignment` | A class that contains one or more `Qualification` objects and a `Source` that Oracle OLAP uses to calculate a value to assign.
`Qualification` | An abstract class that represents an element of a `Source` for an `Assignment` of a `Model`. A `Qualification` identifies the element of an input `Source` to which the `Assignment` applies.
`LiteralQualification` | A concrete class that extends `Qualification` and that represents a literal value that identifies an element of an input `Source`, such as a member of a dimension.
`ModelSolutionDefinition` | A `SourceDefinition` that has information about solving a `CustomModel`.
`PlaceholderDefinition` | A `SourceDefinition` for a placeholder `Source`.

For more information on these new classes, see Chapter 6, "Understanding Source Objects".

### New Classes in the oracle.olap.metadata.mdm Package

The following table lists the new classes in the `oracle.olapi.metadata.mdm` package and provides brief descriptions of them.

Class | Description
--- | ---
`MdmModel` | An abstract class that implements the `Model` interface for `MdmObject` objects.
`MdmDimensionCalculationModel` | An `MdmModel` of a specific data type for an `MdmPrimaryDimension`.
`MdmDimensionedObjectModel` | An abstract class that extends `MdmModel` for dimensioned objects.
`MdmAttributeModel` | An `MdmDimensionedObjectModel` for `MdmAttribute` objects.
`MdmMeasureModel` | An `MdmDimensionedObjectModel` for `MdmMeasure` objects.
`MdmMember` | An interface for a custom dimension member.
`MdmStandardMember` | An implementation of `MdmMember` for an `MdmStandardDimension`.
`MdmTimeMember` | An implementation of `MdmMember` for an `MdmTimeDimension`.

The `MdmMeasure` class now implements the `MdmMember` interface for members of an `MdmMeasureDimension`.

For more information on these new classes, see Chapter 2, "Understanding OLAP API Metadata".

## New Methods of Existing Classes

The following classes in the `oracle.olapi.data.source` package have new factory or accessor methods related to an OLAP API `Model` or to custom dimension members.

- `ConstantListDefinition`

- `DataProvider`

- `FundamentalMetadataProvider`

- `Source`

- `SourceDefinition`

The following classes in the `oracle.olapi.metadata.mdm` package have new factory, accessor, or other methods related to an OLAP API `Model` or to custom dimension members.

- `Mdm10_1_0_3_NamingConvention`

- `Mdm10_1_0_3_ObjectVisitor`

- `MdmCustomObjectFactory`

- `MdmMeasure`

- `MdmMeasureDimension`

- `MdmPrimaryDimension`

- `MdmSource`

- `MdmStandardDimension`

- `MdmTimeDimension`

The `oracle.express.olapi.data.full.ExpressDataProvider` class has new constructor methods that accept `java.util.Locale` or `java.util.Properties` objects or both. It also has new methods that accept a `Properties` object and that create one or more `CursorManager`

## New and Revised Example Programs

This release of the Oracle OLAP API includes new example programs that demonstrate the use of `Model` objects, custom dimension members, and placeholder `Source` objects. Some previously existing example programs have significant revisions.

The example programs contain the complete code for the examples that appear in this document. They are available from the Overview of the Oracle OLAP Java API Reference.

### New Example Programs

The new example programs and the examples for which they contain the complete code are the following:

- `CreateCustomDimensionMember.java`, Example 2-1, "Creating a Custom Member of a Dimension".

- `CreateCustomMeasureDimensionMember.java`, Example 2-4, "Creating a Custom Member of the MdmMeasureDimension".

- `ImplementingExtractAsACustomModel.java`, Example 6-11, "Implementing the extract method as a CustomModel".

- `CreateDependentAssignment.java`, Example 6-12, "Creating an Assignment That Depends on Another Assignment".

- `CreateCustomMemberWithAggVal.java`, Example 6-13, "Creating a Custom Member That Assigns an Aggregated Value".

- `CreateColorAttribute.java`, which is a class that creates a custom color `MdmAttribute` that is used by the `CreateCustomMemberWithAggVal.java` class.

### Revised Example Programs

The example programs that have significant revisions are the following:

- `TransactionExamples.java`, Example 8-1, "Rolling Back a Transaction" and Example 8-2, "Using Child Transaction Objects".

- `TopBottomTest.java`, Example 11-4, "Getting the Source Produced by the Template".

- `SingleSelectionTemplate.java`, Appendix B, "SingleSelectionTemplate Class".

The complete code for the `TopBottomTest.java` and `SingleSelectionTemplate.java` classes are in this document as well as being in the Oracle OLAP Java API Reference.